package com.dh.leetcode.nine;

import org.junit.Assert;
import org.junit.Test;

import java.util.Arrays;

/**
 * @ClassName: _976_largest_perimeter_triangle
 * @Description: 976. 三角形的最大周长
 * <p>
 * https://leetcode-cn.com/problems/largest-perimeter-triangle/
 * 给定由一些正数（代表长度）组成的数组 A，返回由其中三个长度组成的、面积不为零的三角形的最大周长。
 * <p>
 * 如果不能形成任何面积不为零的三角形，返回 0。
 * @Author: shouzimu
 * @Date: 2020/11/29 16:42
 */
public class _976_largest_perimeter_triangle {
    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        int max = 0;
        int len = A.length;
        for (int i = 0; i <= len - 3; i++) {
            int twoSum = A[i] + A[i + 1];
            if (twoSum > A[i + 2]) {
                max = Math.max(max, twoSum + A[i + 2]);
            }
        }
        return max;
    }


    @Test
    public void largestPerimeterTest() {
        Assert.assertEquals(10, largestPerimeter(new int[]{3, 2, 3, 4}));
        Assert.assertEquals(8, largestPerimeter(new int[]{3, 6, 2, 3}));
    }

}
